package com.wjw.utils;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.CannedAccessControlList;
import com.wjw.config.OSSConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.io.ByteArrayInputStream;
import java.io.Serializable;

@Component
public class OSSUtil implements Serializable {

    @Autowired
    private OSSConfig ossConfig;

    public void uploadByBytes(String fileName, byte[] pic) {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(
                ossConfig.getEndpoint(),
                ossConfig.getAccessKeyId(),
                ossConfig.getAccessKeySecret()
        );
        ossClient.putObject(ossConfig.getBucketName(), fileName, new ByteArrayInputStream(pic));
        // 设置文件的访问权限为公共读。
        ossClient.setObjectAcl(ossConfig.getBucketName(), fileName, CannedAccessControlList.PublicRead);
        // 关闭OSSClient。
        ossClient.shutdown();
    }

    /**
     * 删除图片
     */
    public void deletePic(String fileName) {
        // Endpoint以杭州为例，其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-beijing.aliyuncs.com";
        String accessKeyId = ossConfig.getAccessKeyId();
        String accessKeySecret = ossConfig.getAccessKeySecret();
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 删除文件。如需删除文件夹，请将ObjectName设置为对应的文件夹名称。如果文件夹非空，则需要将文件夹下的所有object删除后才能删除该文件夹。
        ossClient.deleteObject(ossConfig.getBucketName(), fileName);
        // 关闭OSSClient。
        ossClient.shutdown();
    }


}